<?php
/**
 * Created by PhpStorm.
 * User: 18048
 * Date: 2018/5/9
 * Time: 18:13
 */
$http = new swoole_http_server("0.0.0.0",'9501');

$http->set([
    'daemonize'=>true,  //是否开启守护进程
    'pid_file'=>'/var/run/swoole.pid',
    'max_conn'=>10,     //最大连接数
    'reactor_num'=>1,   //默认设置为cpu核数
    'worker_num'=>4,    // worker进程
    'max_request'=>2000,    //此参数表示worker进程在处理玩n次请求后结束运行。manager会重新创建一个worker进程。次选项用来防止worker进程内存溢出。
                            //在worker进程中需要报错链接信息的服务，需要设置为0.
    'backlog'=>128,     //此参数将决定最多同时又多少个带accept的链接，swoole本身accept效率是很高的，基本不会出现大量排队情况。
    'open_cpu_affinity'=>1,//启动CPU亲和设置
    'open_tcp_nodelay'=>1,  //启用tcp_nodelay
    'tcp_defer_accept'=>5,  //此参数设定一个秒数，当客户端链接到服务器时，在约定秒数内不会触发accept，直到又数据发送，或者超时才会触发。
    'log_file'=>'/var/log/swoole/swoole.log',//指定swoole报错日志位置。
    'heartbeat_check_interval'=>30,     //每隔多少秒检测一次，单位秒，Swoole会轮询所有TCP链接，将超过心跳时间的链接关闭掉。
    'heartbeat_idle_time'=>60,        //TCP链接的最大闲置时间，单位s，如果某fd最后一次发包距离现在的时间超过heartbeat_idle_time会把这个链接关闭。
    'dispatch_moe'=>1,      //worker进程数据分包分配模式
                            //1.平均分配 2.按FD取模固定分配，3.抢占式分配，默认为取模2
                            //抢占式分配，每次都是空闲的worker进程获得数据。很适合SOA/RPC类的内部服务框架。
                            //当选着抢占模式时，worker进程内发生onConnect/onReceive/onClose/onTime会将worker进程标记为忙，不再接受新的请求。reactor会将新请求投递给其他状态为闲的worker进程。


]);

$http->on('request',function($request,$response){
   $response->header("Content-Type","text/html;charset=utf-8");
   $response->end("<h1>Hello Swoole.#".rand(1000,9999)."</h1>");
});

$http->start();